Gail: Take fill/page size into account when returning a range's maximum value
authorMike Gorse <mgorse@novell.com>
Fri, 10 Sep 2010 10:09:41 +0000 (06:09 -0400)
committerMike Gorse <mgorse@novell.com>
Fri, 10 Sep 2010 10:09:41 +0000 (06:09 -0400)
modules/other/gail/gailrange.c

index 65fd89af045898bfadd7dbdbcae80a8d1ca4292e..07b6d75f7f3d96a518daabed978acff4fa07bf56 100644 (file)
@@ -190,6 +190,9 @@ gail_range_get_maximum_value (AtkValue              *obj,
                               GValue           *value)
 {
   GailRange *range;
+  GtkRange *gtk_range;
+  GtkAdjustment *gtk_adjustment;
+  gdouble max = 0;
 
   g_return_if_fail (GAIL_IS_RANGE (obj));
 
@@ -199,8 +202,20 @@ gail_range_get_maximum_value (AtkValue             *obj,
      * Adjustment has not been specified
      */
     return;
-
   atk_value_get_maximum_value (ATK_VALUE (range->adjustment), value);
+
+  gtk_range = GTK_RANGE (gtk_accessible_get_widget (GTK_ACCESSIBLE (range)));
+  g_return_if_fail (gtk_range);
+
+  gtk_adjustment = gtk_range_get_adjustment (gtk_range);
+  max = g_value_get_double (value);
+  max -=  gtk_adjustment_get_page_size (gtk_adjustment);
+
+  if (gtk_range_get_restrict_to_fill_level (gtk_range))
+    max = MIN (max, gtk_range_get_fill_level (gtk_range));
+
+  g_value_set_double (value, max);
 }
 
 static void